logrotate設定
あなたの上述した第4の提案は、生産レベル用のlogrotateの構成に使用する方法(AI回答)
ログ自動回転、圧縮期限切れ、ログファイルが大きすぎなくディスク容量を記録する構成で、Java向けにはスピード違反した設定ファイルを実装することができます。以下に、単一設定の support-service に適用されるすべてを構成します:
1. logrotateプロフィールを作成
/etc/logrotate.d/ディレクトリ内に、サービス業者専用のプロファイルを作成します(サービス名としてメンテナンスに便利です):
sudo vim/etc/logrotate.d/support-service
2. プロダクション環境で設定したコンテンツ
以下の設定を追加してください(/var/log/support-service/フォルダ用のログを選択してください):
3. 設定項目記述(コアパラメータ)
| 設定項目 | 使用方法 |
|---|---|
daily | 毎日ラウンド ロフトのパラメーターを最適化し、100MBまで繰り上げます。 |
rotate 30 | シフトを30個保持(最大で自動削除で30個以上) |
size 100M | シングルログ・ファイルが100MBに達したら不活性なダイアルファイルをキャストが開くことができません) |
compress | 古いログは自動的に gzip圧縮で圧縮されます(圧縮率が70%で、大幅に節約されます) |
delaycompress | 当日の古いログは、(一時的に表示、翌日圧縮) |
create 0640 www www | ローテーション後、新規ログファイルは 640で、メイン/属するグループは www に従います。 |
postrotate | 実行で実行されたスクリプト:は、新しい ログファイルに切り替えるように、USR1メッセージを送信します |
4. 重要注意事項(ロギングの損失を避ける)
-
Javaアプリのログ変更サポート:
多くのJavaログフレーム(Logback、Log4j2) デフォルトではUSR1信号によるログリロードを起動し、再起動する必要はありません。アプリはサポートされていない場合は、copytruncateに変更します(ただしログが残りすぎ可能性があります):# 替代postrotate的方案(适合不支持USR1信号的应用) copytruncate # 先复制日志内容到备份文件,再清空原文件(可能丢失复制期间的日志) -
アクセス許可の一貫性:
createパラメータは、アプリケーションのユーザ(www)と一致する必要があります。それ以外の場合は新しいログファイルに書き込み権限がありません。 -
テスト構成の有効性:
プロファイルを実行した後、次のコマンドを実行します。 (このラウンドの回転は書き出されません):sudo logrotate -d /etc/logrotate.d/support-service手动触发一次轮转(用于验证):
sudo logrotate -f /etc/logrotate.d/support-service
5. 毎日メンテナンス
- 定期的に
/var/log/support-service/フォルダを調べます。変更履歴がリターンや圧縮されたかを確認してください。 - ディスクの容量とログの量に基づいて、
rotate(日数およびsizeを設定) のしきい値を調整します。 - 長いログをアーカイブするには、
prerotateからスクリプトを追加して代わりにログをオブジェクトストレージ(例:S3、OSS) に同期することができます。
このコンフィギュレーションにより、生産環境に対する安定性の要求を満たすため、ディスクの完全利用は避けられなくなります。